In [3]:
from nd2reader import ND2Reader
import numpy as np
import imageio
import matplotlib.pyplot as plt
from PIL import Image
from skimage import io
%matplotlib inline
tag=0
# define crop range
range1=[75, 215]
range2=[295, 435]

data_path = 'H:/DH_localization/Experiments_Phase2_afterSPIE/NW_astig_spetrum_data/September2019_CS_3DsSMLM'
In [2]:
im1 = ND2Reader(data_path + '/3DMC_Scan (1).nd2')               
im2 = ND2Reader(data_path + '/3DMC_Scan (2).nd2')               
im3 = ND2Reader(data_path + '/3DMC_Scan (3).nd2')               
im4 = ND2Reader(data_path + '/3DMC_Scan (4).nd2')               
im5 = ND2Reader(data_path + '/3DMC_Scan (5).nd2')               
im6 = ND2Reader(data_path + '/3DMC_Scan (6).nd2')               
im7 = ND2Reader(data_path + '/3DMC_Scan (7).nd2')               
im8 = ND2Reader(data_path + '/3DMC_Scan (8).nd2')               
im9 = ND2Reader(data_path + '/3DMC_Scan (9).nd2')               
im10 = ND2Reader(data_path + '/3DMC_Scan (10).nd2')               
im11 = ND2Reader(data_path + '/3DMC_Scan (11).nd2')               
im12 = ND2Reader(data_path + '/3DMC_Scan (12).nd2')               

im13 = ND2Reader(data_path + '/3DMC_Scan_Lowilumination (1).nd2')               
im14 = ND2Reader(data_path + '/3DMC_Scan_Lowilumination (2).nd2')               
im15 = ND2Reader(data_path + '/3DMC_Scan_Lowilumination (3).nd2')               
im16 = ND2Reader(data_path + '/3DMC_Scan_Lowilumination (4).nd2')               
im17 = ND2Reader(data_path + '/3DMC_Scan_Lowilumination (5).nd2')               

im18 = ND2Reader(data_path + '/Cali_3D_Crimson (1).nd2')               
im19 = ND2Reader(data_path + '/Cali_3D_Crimson (2).nd2')               
im20 = ND2Reader(data_path + '/Cali_3D_Crimson (3).nd2')               
im21 = ND2Reader(data_path + '/Cali_3D_Crimson (4).nd2')               
im22 = ND2Reader(data_path + '/Cali_3D_Crimson (5).nd2')               
im23 = ND2Reader(data_path + '/Cali_3D_Crimson (6).nd2')               
im24 = ND2Reader(data_path + '/Cali_3D_Crimson (7).nd2')               

im25 = ND2Reader(data_path + '/Cali_3D_Darkred (1).nd2')               
im26 = ND2Reader(data_path + '/Cali_3D_Darkred (2).nd2')               
im27 = ND2Reader(data_path + '/Cali_3D_Darkred (3).nd2')               
im28 = ND2Reader(data_path + '/Cali_3D_Darkred (4).nd2')               
im29 = ND2Reader(data_path + '/Cali_3D_Darkred (5).nd2')               
im30 = ND2Reader(data_path + '/Cali_3D_Darkred (6).nd2')               
im31 = ND2Reader(data_path + '/Cali_3D_Darkred (7).nd2')               

im32 = ND2Reader(data_path + '/Cali_FieldDistortion_wCL.nd2')               
im33 = ND2Reader(data_path + '/Cali_FieldDistortion_woCL.nd2')               

im34 = ND2Reader(data_path + '/Cali_Spectral_wCL.nd2')               

Log

MCexpt. Aug. 2019

  1. Cali_Spectral: Spectral calibration w/ CL using a NEON lamp.
  2. Cali_FieldDistortion: Field distortion cailbration files w/ and w/o CL.
  3. Cali_3D_Crimson: 3D calibration with the crimson color nanosphere
  4. Cali_3D_Darkred: 3D calibration with the darkred color nanosphere
  5. 3DMC_Scan: 3D scan files using multi-color nanospheres
  6. 3DMC_Scan_Lowillumination: 3D scan files using multi-color nanospheres with low illumination.

Spectral dispersion: ~ 3.1 nm/pixelPixel size: 181 nm. (a camera pixel size of 16 um with the total magnification: 88.5 (100X OBJ, 1.5X tubelens, 0.59X relayoptics)) All 3D data sets were scanned with stepsize of 25 nm.10 um axial range for Cali_3D 20 um axial range 3DMC_Scan.Exposure time: 30 ms - 200ms.

first check field distortion Calibration

check calibration

In [3]:
fig = plt.figure(figsize=[15,8])
plt.subplot(211)
plt.imshow(im1[800])
plt.title('with CL')
Out[3]:
Text(0.5,1,'with CL')

check data

In [5]:
print('3DMC_Scan')
for ind in np.arange(12):
    exec('im = im'+str(ind+1))
    fig = plt.figure(figsize=[15,8])
    plt.subplot(231); plt.imshow(im[80].T);  plt.axis('off')
    plt.subplot(232); plt.imshow(im[180].T); plt.axis('off')
    plt.subplot(233); plt.imshow(im[280].T); plt.axis('off')
3DMC_Scan
In [6]:
print('3DMC_Scan_Lowilumination')
for ind in np.arange(5):
    exec('im = im'+str(ind+13))
    fig = plt.figure(figsize=[15,8])
    plt.subplot(231); plt.imshow(im[80].T);  plt.axis('off')
    plt.subplot(232); plt.imshow(im[180].T); plt.axis('off')
    plt.subplot(233); plt.imshow(im[280].T); plt.axis('off')
3DMC_Scan_Lowilumination
In [7]:
print('Cali_3D_Crimson')
for ind in np.arange(7):
    exec('im = im'+str(ind+18))
    fig = plt.figure(figsize=[15,8])
    plt.subplot(231); plt.imshow(im[80].T);  plt.axis('off')
    plt.subplot(232); plt.imshow(im[180].T); plt.axis('off')
    plt.subplot(233); plt.imshow(im[280].T); plt.axis('off')
Cali_3D_Crimson
In [8]:
print('Cali_3D_Darkred')
for ind in np.arange(7):
    exec('im = im'+str(ind+25))
    fig = plt.figure(figsize=[15,8])
    plt.subplot(231); plt.imshow(im[80].T);  plt.axis('off')
    plt.subplot(232); plt.imshow(im[180].T); plt.axis('off')
    plt.subplot(233); plt.imshow(im[280].T); plt.axis('off')
Cali_3D_Darkred

crop 2 channel FOVs

In [8]:
#for ind in np.arange(1):


for ind in np.arange(34):    
    exec('im = im'+str(ind+1))
    print(ind)
    plt.figure(figsize=(10,10))
    plt.subplot(121)
    if ind < 31:
        plt.imshow(im[180][range1[0]:range1[1]])
    else:
        plt.imshow(im[0][range1[0]:range1[1]])
        
    plt.subplot(122)
    
    if ind < 31:
        plt.imshow(im[180][range2[0]:range2[1]])
    else:
        plt.imshow(im[0][range2[0]:range2[1]])
    
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
C:\Users\china\Anaconda3\envs\PyPRIS_env\lib\site-packages\matplotlib\pyplot.py:522: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
  max_open_warning, RuntimeWarning)
27
28
29
30
31
32
33

convert data into tiff stack

import os import imageio import numpy as np thedir=data_path fs = [name for name in os.listdir(thedir) if os.path.isfile(os.path.join(thedir, name))] data_path_tifs = 'G:/DH_localization/Experiments_Phase2_afterSPIE/NW_astig_spetrum_data/September2019_CS_3DsSMLM_tiffs' for f in fs[0:-1]: im = ND2Reader(data_path + '/' + f) imageio.mimwrite(data_path_tifs + '/' + f[0:-4]+'.tif',np.asarray(im)) imar = np.asarray(im) ims1=imar[:,range1[0]:range1[1],:] ims0=imar[:,range2[0]:range2[1],:] imageio.mimwrite(data_path_tifs + '/' + f[0:-4]+'_dif0CL.tif',ims0) imageio.mimwrite(data_path_tifs + '/' + f[0:-4]+'_dif1.tif',ims1)

on going

  • figure out export sliced tif stack.
  • load bead peak coordinates as pd dataframe.
  • [current] export each bead stack. Pay attention to the edge mismatch. need to pad zeros.
  • sub pixel alignment and averaging.
In [45]:
# Now crop field of views for all dataset.
import pandas as pd
peaksf=data_path+'/Sep2019_bead_coordinates.xlsx'
df = pd.read_excel(peaksf) #for an earlier version of Excel, you may need to use the file extension of 'xls'
df.head()
Out[45]:
file name bead index 0th order x 0th order y 1st order x 1st order y z dy width xy width z
0 Cali_3D_Darkred ().nd2 1 78.00 354.6 71.33 138.660 188 215.940 50.0 100.0
1 Cali_3D_Darkred (1).nd2 2 160.66 306.0 169.33 88.667 188 217.333 NaN NaN
2 Cali_3D_Darkred (2).nd2 1 36.00 342.0 21.00 126.000 180 216.000 NaN NaN
3 Cali_3D_Darkred (2).nd2 2 129.00 360.0 132.00 143.000 180 217.000 NaN NaN
4 Cali_3D_Darkred (3).nd2 1 37.00 356.0 22.00 139.000 188 217.000 NaN NaN
In [33]:
def cropPSF3D(des_dims, ori_dims, widths, ori_coords, ori_stack):
    ori_sta_t = list()
    ori_sta = list()
    ori_end = list()
    des_sta = list()
    des_end = list()
    for ind, x in enumerate(zip(des_dims, ori_dims, widths, ori_coords)):
        d_dim = x[0]
        o_dim = x[1]
        w = x[2]
        o_coord = x[3]
        ost = o_coord - w # original matrix, starting index, temp
        os = max(0, ost) # original matrix, starting index. 
        oe = min(o_dim-1, o_coord + w) # original matrix, ending index
            
        ds = max(0, w - (o_coord - os)) # destimation matrix, starting index
        de = min(d_dim, w + (oe - o_coord)) # destination matrix, ending index
        ori_sta_t.append(ost)
        ori_sta.append(os)
        ori_end.append(oe)
        des_sta.append(ds)
        des_end.append(de)
    
    des_stack = np.zeros((des_dims))
    des_stack[des_sta[0]:des_end[0], des_sta[1]:des_end[1], des_sta[2]:des_end[2]] = ori_stack[ori_sta[0]:ori_end[0], ori_sta[1]:ori_end[1], ori_sta[2]:ori_end[2]]
    return des_stack
    print(des_stack.shape)
    print('ori_dims:' + str(ori_dims))
    print('ori_coords:' + str(ori_coords))
    print('widths:' + str(widths))
    print('ori_sta_t' + str(ori_sta_t))
    print('ori_sta:' + str(ori_sta))
    print('ori_end:' + str(ori_end))
    print('')
    print('des_dims:' + str(des_dims))
    print('des_sta:' + str(des_sta))
    print('des_end:' + str(des_end))
    
f = df['file name'][1]
im = np.asarray(ND2Reader(data_path + '/' + f))
l = cropPSF3D(des_dims = np.asarray([201,101,101]),
              ori_dims = np.asarray(im.shape),
              widths = np.asarray([100,50,50]),
              ori_coords = np.asarray([188, 354, 78]),
              ori_stack = im)
In [34]:
plt.imshow(l[100,:,:])
Out[34]:
<matplotlib.image.AxesImage at 0x1d8e9b5d978>
In [35]:
df['width xy'][0]
w_xy = np.int(df['width xy'][0])
w_z = np.int(df['width z'][0])
psf_stack = np.zeros([w_z*2+1, w_xy*2+1, w_xy*2+1])
In [97]:
fig = plt.figure(figsize=[15,60])
for ind in np.arange(1,31):
    print(ind)
    m = df.loc[ind][0][0:-4]+' bead' +' '+str(df.loc[ind][1])
    f = df['file name'][ind]
    im = np.asarray(ND2Reader(data_path + '/' + f))
    psf_stack_stamp1 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                                  ori_dims = np.asarray(im.shape),
                                  widths = np.asarray([100,50,50]),
                                  ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['0th order y'][ind]), np.int(df['0th order x'][ind])]),
                                  ori_stack = im)
    plt.subplot(15,4,ind*2-1)
    plt.imshow(psf_stack_stamp1[56,:,:])
    plt.title(str(df['file name'][ind]) + ' bead-' + str(df['bead index'][ind]))

    psf_stack_stamp2 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                                  ori_dims = np.asarray(im.shape),
                                  widths = np.asarray([100,50,50]),
                                  ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['1st order y'][ind]), np.int(df['1st order x'][ind])]),
                                  ori_stack = im)
    plt.subplot(15,4,ind*2)
    plt.imshow(psf_stack_stamp2[56,:,:])
    plt.title(ind)
    #plt.title(str(ind))
    print(m)
1
Cali_3D_Darkred (1) bead 2
2
Cali_3D_Darkred (2) bead 1
3
Cali_3D_Darkred (2) bead 2
4
Cali_3D_Darkred (3) bead 1
5
Cali_3D_Darkred (3) bead 2
6
Cali_3D_Darkred (4) bead 1
7
Cali_3D_Darkred (4) bead 2
8
Cali_3D_Darkred (5) bead 1
9
Cali_3D_Darkred (5) bead 2
10
Cali_3D_Darkred (5) bead 3
11
Cali_3D_Darkred (5) bead 4
12
Cali_3D_Darkred (6) bead 1
13
Cali_3D_Darkred (6) bead 2
14
Cali_3D_Darkred (6) bead 3
15
Cali_3D_Darkred (7) bead 1
16
Cali_3D_Darkred (7) bead 2
17
Cali_3D_Crimson (1) bead 1
18
Cali_3D_Crimson (2) bead 1
19
Cali_3D_Crimson (2) bead 2
20
Cali_3D_Crimson (3) bead 1
21
Cali_3D_Crimson (3) bead 2
22
Cali_3D_Crimson (3) bead 3
23
Cali_3D_Crimson (4) bead 1
24
Cali_3D_Crimson (4) bead 2
25
Cali_3D_Crimson (5) bead 1
26
Cali_3D_Crimson (5) bead 2
27
Cali_3D_Crimson (6) bead 1
28
Cali_3D_Crimson (6) bead 2
29
Cali_3D_Crimson (7) bead 1
30
Cali_3D_Crimson (7) bead 2
In [98]:
fig = plt.figure(figsize=[15,60])
for ind in np.arange(1,31):
    print(ind)
    m = df.loc[ind][0][0:-4]+' bead' +' '+str(df.loc[ind][1])
    f = df['file name'][ind]
    im = np.asarray(ND2Reader(data_path + '/' + f))
    psf_stack_stamp1 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                                  ori_dims = np.asarray(im.shape),
                                  widths = np.asarray([100,50,50]),
                                  ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['0th order y'][ind]), np.int(df['0th order x'][ind])]),
                                  ori_stack = im)
    plt.subplot(15,4,ind*2-1)
    plt.imshow(psf_stack_stamp1[100,:,:])
    plt.title(str(df['file name'][ind]) + ' bead-' + str(df['bead index'][ind]))

    psf_stack_stamp2 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                                  ori_dims = np.asarray(im.shape),
                                  widths = np.asarray([100,50,50]),
                                  ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['1st order y'][ind]), np.int(df['1st order x'][ind])]),
                                  ori_stack = im)
    plt.subplot(15,4,ind*2)
    plt.imshow(psf_stack_stamp2[100,:,:])
    plt.title(ind)
    #plt.title(str(ind))
    print(m)
1
Cali_3D_Darkred (1) bead 2
2
Cali_3D_Darkred (2) bead 1
3
Cali_3D_Darkred (2) bead 2
4
Cali_3D_Darkred (3) bead 1
5
Cali_3D_Darkred (3) bead 2
6
Cali_3D_Darkred (4) bead 1
7
Cali_3D_Darkred (4) bead 2
8
Cali_3D_Darkred (5) bead 1
9
Cali_3D_Darkred (5) bead 2
10
Cali_3D_Darkred (5) bead 3
11
Cali_3D_Darkred (5) bead 4
12
Cali_3D_Darkred (6) bead 1
13
Cali_3D_Darkred (6) bead 2
14
Cali_3D_Darkred (6) bead 3
15
Cali_3D_Darkred (7) bead 1
16
Cali_3D_Darkred (7) bead 2
17
Cali_3D_Crimson (1) bead 1
18
Cali_3D_Crimson (2) bead 1
19
Cali_3D_Crimson (2) bead 2
20
Cali_3D_Crimson (3) bead 1
21
Cali_3D_Crimson (3) bead 2
22
Cali_3D_Crimson (3) bead 3
23
Cali_3D_Crimson (4) bead 1
24
Cali_3D_Crimson (4) bead 2
25
Cali_3D_Crimson (5) bead 1
26
Cali_3D_Crimson (5) bead 2
27
Cali_3D_Crimson (6) bead 1
28
Cali_3D_Crimson (6) bead 2
29
Cali_3D_Crimson (7) bead 1
30
Cali_3D_Crimson (7) bead 2

Chosen bead as the PSFs:

chosen dark read PSFs:

In [99]:
fig = plt.figure(figsize=[15,5])
ind = 16
m = df.loc[ind][0][0:-4]+' bead' +' '+str(df.loc[ind][1])
f = df['file name'][ind]
im = np.asarray(ND2Reader(data_path + '/' + f))
DR0 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                              ori_dims = np.asarray(im.shape),
                              widths = np.asarray([100,50,50]),
                              ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['0th order y'][ind]), np.int(df['0th order x'][ind])]),
                              ori_stack = im)
plt.subplot(1,2,1)
plt.imshow(DR0[100,:,:])
plt.title(str(df['file name'][ind]) + ' bead-' + str(df['bead index'][ind]))

DR1 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                              ori_dims = np.asarray(im.shape),
                              widths = np.asarray([100,50,50]),
                              ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['1st order y'][ind]), np.int(df['1st order x'][ind])]),
                              ori_stack = im)
plt.subplot(1,2,2)
plt.imshow(DR1[100,:,:])
plt.title(ind)
Out[99]:
Text(0.5,1,'16')

chosen crimson read PSFs:

In [100]:
fig = plt.figure(figsize=[15,5])
ind = 25
m = df.loc[ind][0][0:-4]+' bead' +' '+str(df.loc[ind][1])
f = df['file name'][ind]
im = np.asarray(ND2Reader(data_path + '/' + f))
CS0 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                              ori_dims = np.asarray(im.shape),
                              widths = np.asarray([100,50,50]),
                              ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['0th order y'][ind]), np.int(df['0th order x'][ind])]),
                              ori_stack = im)
plt.subplot(1,2,1)
plt.imshow(DR0[100,:,:])
plt.title(str(df['file name'][ind]) + ' bead-' + str(df['bead index'][ind]))

CS1 = cropPSF3D(des_dims = np.asarray([201,101,101]),
                              ori_dims = np.asarray(im.shape),
                              widths = np.asarray([100,50,50]),
                              ori_coords = np.asarray([np.int(df['z'][ind]), np.int(df['1st order y'][ind]), np.int(df['1st order x'][ind])]),
                              ori_stack = im)
plt.subplot(1,2,2)
plt.imshow(DR1[100,:,:])
plt.title(ind)
Out[100]:
Text(0.5,1,'25')

write out PSF stacks to tiff for PyPRIS

In [101]:
import imageio
data_path_tifs = 'H:/DH_localization/Experiments_Phase2_afterSPIE/NW_astig_spetrum_data/September2019_CS_3DsSMLM_tiffs'
imageio.mimwrite(data_path_tifs + '/PSF_Darkred_Order0.tif',np.asarray(DR0,'int'))
imageio.mimwrite(data_path_tifs + '/PSF_Darkred_Order1.tif',np.asarray(DR1,'int'))
imageio.mimwrite(data_path_tifs + '/PSF_Crimson_Order0.tif',np.asarray(CS0,'int'))
imageio.mimwrite(data_path_tifs + '/PSF_Crimson_Order1.tif',np.asarray(CS1,'int'))
In [28]:
df
Out[28]:
file name bead index 0th order x 0th order y 1st order x 1st order y z dy width xy width z
0 Cali_3D_Darkred ().nd2 1 78.00 354.6 71.33 138.660 188 215.940 50.0 100.0
1 Cali_3D_Darkred (1).nd2 2 160.66 306.0 169.33 88.667 188 217.333 NaN NaN
2 Cali_3D_Darkred (2).nd2 1 36.00 342.0 21.00 126.000 180 216.000 NaN NaN
3 Cali_3D_Darkred (2).nd2 2 129.00 360.0 132.00 143.000 180 217.000 NaN NaN
4 Cali_3D_Darkred (3).nd2 1 37.00 356.0 22.00 139.000 188 217.000 NaN NaN
5 Cali_3D_Darkred (3).nd2 2 167.00 334.0 178.00 117.000 188 217.000 NaN NaN
6 Cali_3D_Darkred (4).nd2 1 45.00 328.0 36.00 111.000 188 217.000 NaN NaN
7 Cali_3D_Darkred (4).nd2 2 97.00 405.0 97.00 190.000 188 215.000 NaN NaN
8 Cali_3D_Darkred (5).nd2 1 58.00 307.0 48.00 90.000 180 217.000 NaN NaN
9 Cali_3D_Darkred (5).nd2 2 124.00 359.0 125.00 143.000 180 216.000 NaN NaN
10 Cali_3D_Darkred (5).nd2 3 171.00 391.0 182.00 183.000 180 208.000 NaN NaN
11 Cali_3D_Darkred (5).nd2 4 179.00 351.0 191.00 135.000 180 216.000 NaN NaN
12 Cali_3D_Darkred (6).nd2 1 59.00 392.0 49.00 175.000 191 217.000 NaN NaN
13 Cali_3D_Darkred (6).nd2 2 137.00 381.0 141.00 164.000 191 217.000 NaN NaN
14 Cali_3D_Darkred (6).nd2 3 167.00 336.0 177.00 119.000 191 217.000 NaN NaN
15 Cali_3D_Darkred (7).nd2 1 79.00 336.0 74.00 119.000 193 217.000 NaN NaN
16 Cali_3D_Darkred (7).nd2 2 176.00 336.0 188.00 118.000 193 218.000 NaN NaN
17 Cali_3D_Crimson (1).tif 1 121.00 416.0 122.00 198.000 196 218.000 NaN NaN
18 Cali_3D_Crimson (2).tif 1 124.00 359.0 124.00 142.000 188 217.000 NaN NaN
19 Cali_3D_Crimson (2).tif 2 153.00 308.0 159.00 88.000 188 220.000 NaN NaN
20 Cali_3D_Crimson (3).tif 1 36.00 368.0 23.00 150.000 198 218.000 NaN NaN
21 Cali_3D_Crimson (3).tif 2 83.00 370.0 77.00 152.000 198 218.000 NaN NaN
22 Cali_3D_Crimson (3).tif 3 164.00 350.0 174.00 132.000 198 218.000 NaN NaN
23 Cali_3D_Crimson (4).tif 1 78.00 325.0 73.00 104.000 186 221.000 NaN NaN
24 Cali_3D_Crimson (4).tif 2 158.00 403.0 166.00 184.000 186 219.000 NaN NaN
25 Cali_3D_Crimson (5).tif 1 86.00 363.0 81.00 144.000 188 219.000 NaN NaN
26 Cali_3D_Crimson (5).tif 2 161.00 360.0 169.00 141.000 188 219.000 NaN NaN
27 Cali_3D_Crimson (6).tif 1 44.00 322.0 32.00 106.000 198 216.000 NaN NaN
28 Cali_3D_Crimson (6).tif 2 86.00 344.0 81.00 128.000 198 216.000 NaN NaN
29 Cali_3D_Crimson (7).tif 1 83.00 369.0 78.00 148.000 183 221.000 NaN NaN
30 Cali_3D_Crimson (7).tif 2 131.00 345.0 134.00 125.000 183 220.000 NaN NaN
In [40]:
np.asarray([df['z'][ind], df['0th order y'][ind], df['0th order x'][ind]])
Out[40]:
array([188.  , 306.  , 160.66])

Generate testing images

In [195]:
path="H:\\DH_localization\\Experiments_Phase2_afterSPIE\\NW_astig_spetrum_data\\September2019_CS_3DsSMLM_tiffs"
slices_file = 'H:\\DH_localization\\Experiments_Phase2_afterSPIE\\NW_astig_spetrum_data\\September2019_CS_3DsSMLM\\Sep2019_recovery_slices.xlsx';
sf = pd.read_excel(slices_file)
sf.head()
outputpath="C:\\Users\\china\\Desktop\\Research\\PyPRIS\\test_dataset_6";
for ind in np.arange(0,4):
    data = path + '\\' + sf['fname'][ind]
    print(data1)
    for imsuffix in ['_dif1.tif', '_dif0CL.tif']:
        im = np.array(io.imread(data[0:-4]+ imsuffix))
        plt.figure(figsize=[15, 10])
        for frameN in [1, 2, 3]:
            n = outputpath+'\\view'+str(sf['viewN'][ind]) +'_frame'+str(sf['frame'+str(frameN)][ind]) + imsuffix;
            m = im[int(sf['frame'+str(frameN)][ind]),:,:]
            plt.subplot(1,3,frameN)
            plt.imshow(m);imageio.imwrite(n,m);
            plt.title('view'+str(ind)+' frame' + str(sf['frame'+str(frameN)][ind]))
            print(n)
H:\DH_localization\Experiments_Phase2_afterSPIE\NW_astig_spetrum_data\September2019_CS_3DsSMLM_tiffs\3DMC_Scan (1).tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view1_frame505_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view1_frame534_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view1_frame558_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view1_frame505_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view1_frame534_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view1_frame558_dif0CL.tif
H:\DH_localization\Experiments_Phase2_afterSPIE\NW_astig_spetrum_data\September2019_CS_3DsSMLM_tiffs\3DMC_Scan (1).tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view2_frame276_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view2_frame290_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view2_frame300_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view2_frame276_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view2_frame290_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view2_frame300_dif0CL.tif
H:\DH_localization\Experiments_Phase2_afterSPIE\NW_astig_spetrum_data\September2019_CS_3DsSMLM_tiffs\3DMC_Scan (1).tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view3_frame390_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view3_frame410_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view3_frame430_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view3_frame390_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view3_frame410_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view3_frame430_dif0CL.tif
H:\DH_localization\Experiments_Phase2_afterSPIE\NW_astig_spetrum_data\September2019_CS_3DsSMLM_tiffs\3DMC_Scan (1).tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view4_frame328_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view4_frame406_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view4_frame437_dif1.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view4_frame328_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view4_frame406_dif0CL.tif
C:\Users\china\Desktop\Research\PyPRIS\test_dataset_6\view4_frame437_dif0CL.tif

get calibration single frame to fit for shift

In [11]:
path="H:\\DH_localization\\Experiments_Phase2_afterSPIE\\NW_astig_spetrum_data\\September2019_CS_3DsSMLM_tiffs"
outputpath="C:\\Users\\china\\Desktop\\Research\\PyPRIS\\test_dataset_6"; 
n1 = outputpath + "\\Cali_3D_Crimson (3) single slice"
n2 = outputpath + "\\Cali_3D_Darkred  (5) single slice"
data1 = path + '\\' + "Cali_3D_Crimson (3).tif"
data2 = path + '\\' + "Cali_3D_Darkred (5).tif"
im1 = np.array(io.imread(data1))
im2 = np.array(io.imread(data2))
m1 = im1[192,:,:]
m2 = im2[188,:,:]
plt.figure(figsize=[10,10])
plt.subplot(221)
plt.imshow(im1[192, range1[0]:range1[1],:]);plt.title('dif1')
plt.subplot(222)
plt.imshow(im2[188, range1[0]:range1[1],:])
plt.subplot(223)
plt.imshow(im1[192, range2[0]:range2[1],:]); plt.title('dif0CL')
plt.subplot(224)
plt.imshow(im2[188, range2[0]:range2[1],:])

imageio.imwrite(n1+"_dif1.tif",im1[192, range1[0]:range1[1],:]);
imageio.imwrite(n1+"_dif0CL.tif",im1[192, range2[0]:range2[1],:]);

imageio.imwrite(n2+"_dif1.tif",im2[188, range1[0]:range1[1],:]);
imageio.imwrite(n2+"_dif0CL.tif",im2[188, range2[0]:range2[1],:]);



# for ind in np.arange(34):    
#     exec('im = im'+str(ind+1))
#     print(ind)
#     plt.figure(figsize=(10,10))
#     plt.subplot(121)
#     if ind < 31:
#         plt.imshow(im[180][range1[0]:range1[1]])
#     else:
#         plt.imshow(im[0][range1[0]:range1[1]])
        
#     plt.subplot(122)
    
#     if ind < 31:
#         plt.imshow(im[180][range2[0]:range2[1]])
#     else:
#         plt.imshow(im[0][range2[0]:range2[1]])
    
In [ ]: